/*
 * Copyright The OpenTelemetry Authors, Aspecto
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export const extractTableFromQuery = (query: string | null | undefined) => {
  try {
    const result = query?.match(/(?<=from|join|truncate)\s+"?`?(\w+)"?`?/gi);
    if (!Array.isArray(result)) return;

    return result
      .map(table =>
        table
          .trim()
          .replace(/^"(.*)"$/, '$1')
          .replace(/^`(.*)`$/, '$1')
      )
      .sort()
      .join(',');
  } catch {
    return;
  }
};
